package com.zpark.se.io.raf;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.charset.StandardCharsets;

/**
 * @PackageName: com.zpark.se.io.raf
 * @ClassName: Demo04
 * @Description:
 * @author: RZS
 * @date: 2024/11/18  11:06
 */
public class Demo04 {
    public static void main(String[] args) {
        // 声明路径
        String path = "src/com/zpark/se/io/raf/content/raf.txt";
        RandomAccessFile raf = null;
        try {
            // 创建随机文件读写对象
            raf = new RandomAccessFile(path, "rw");

            // 向文件当中写数据

//            String str = "京口瓜洲一水间，\n钟山只隔数重山。\n春风又绿江南岸，\n明月何时照我还。";
//            byte[] bs = str.getBytes("utf-8");
//
//            raf.write(bs);

            // 读取文件数据
            /*
                读取一个字节
             * read()方法返回一个int类型的数据，如果文件已经读完，则返回-1
             */
            /*int read = 0;
            while ((read = raf.read()) != -1){
                System.out.println(read);
            }*/

            // 将文件当中的内容读取出来并且输出到控制台
           /* byte[] data = new byte[8];
            while (raf.read(data) != -1) {
                // 将字节转为字符串
                String s = new String(data, "utf-8");
                System.out.println(s);
            }*/

            /*
             读取一行
             */
            // 获取文件长度
            long length = raf.length();
            // 循环读取文件数据
            while (length != raf.getFilePointer()) {
                String s = raf.readLine();
                System.out.println(new String(
                        s.getBytes(StandardCharsets.ISO_8859_1), "utf-8"));

            }


        } catch(FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (raf != null) {
                try {
                    // 关闭文件对象
                    raf.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
